/**
 * 封装http 请求方法
 */
import config from '~/configs/configs'
console.log(config.baseUrl);
const http = (params) => {
    //返回promise 对象
    return new Promise((resolve, reject) => {
        if (params.settoken) {
            wx.getStorage({
                key: 'usermsg',
                success(res) {
                    params.header.applet_token = res.data.token
                    
                    wx.request({
                        url: config.baseUrl + params.url,//服务器url+参数中携带的接口具体地址
                        data: params.data,//请求参数
                        header: params.header || {
                            "Content-Type": "application/x-www-form-urlencoded",//设置后端需要的常用的格式就好，特殊情况调用的时候单独设置
                        },
                        method: params.method || 'GET',//默认为GET,可以不写，如常用请求格式为POST，可以设置POST为默认请求方式
                        dataType: params.dataType,//返回的数据格式,默认为JSON，特殊格式可以在调用的时候传入参数
                        responseType: params.responseType,//响应的数据类型
                        success: function (res) {
                            //接口访问正常返回数据
                            if (res.statusCode == 200) {
                                //1. 操作成功返回数据,原则上只针对服务器端返回成功的状态（如本例中为000000）
                                // if (res.data.code == '21001'){
                                //   wx.clearStorage({
                                //     success: function () {
                                //       wx.reLaunch({
                                //         url: '../start/start',
                                //       })
                                //     }
                                //   })
                                // }
                                resolve(res.data)
                                // if (res.data.code == "20000" || res.data.code == "20001") {
                                //     resolve(res.data)
                                // } else {
                                //     wx.showToast({
                                //         icon: "none",
                                //         title: res.data.message
                                //     })
                                // }
                            } else {
                                //2. 操作不成功返回数据，以toast方式弹出响应信息，如后端未格式化非操作成功异常信息，则可以统一定义异常提示
                                var errMsg = res.message
                                if (errMsg == "") {
                                    errMsg = "服务器繁忙!"
                                }
                                // wx.showToast({
                                //     title: errMsg,
                                //     icon: 'none',   // 图标类型，默认success
                                //     duration: 5000   // 提示窗停留时间，默认1500ms
                                // })
                            }
                        },
                        fail: function (e) {
                            reject(e)
                        }
                    })
                },
                fail(res) {
                    wx.showToast({
                        title: '暂无登录，去登录',
                        icon: 'none',
                        duration: 2000
                    })
                    setTimeout(() => {
                        wx.navigateTo({
                            url: '/logins/logins/logins',

                        })
                    }, 2000);
                    return
                }
            })
        } else {
            params.header.applet_token = ''
            wx.getStorage({
                key: 'usermsg',
                complete(msg){
                    if(msg.errMsg == "getStorage:ok"){
                        params.header.applet_token = msg.data.token
                    }
                    wx.request({
                        url: config.baseUrl + params.url,//服务器url+参数中携带的接口具体地址
                        data: params.data,//请求参数
                        header: params.header || {},//设置后端需要的常用的格式就好，特殊情况调用的时候单独设置
                        method: params.method || 'GET',//默认为GET,可以不写，如常用请求格式为POST，可以设置POST为默认请求方式
                        dataType: params.dataType,//返回的数据格式,默认为JSON，特殊格式可以在调用的时候传入参数
                        responseType: params.responseType,//响应的数据类型
                        success: function (res) {
                            //接口访问正常返回数据
                            if (res.statusCode == 200) {
                                //1. 操作成功返回数据,原则上只针对服务器端返回成功的状态（如本例中为000000）
                                // if (res.data.code == '21001'){
                                //   wx.clearStorage({
                                //     success: function () {
                                //       wx.reLaunch({
                                //         url: '../start/start',
                                //       })
                                //     }
                                //   })
                                // }
                                resolve(res.data)
                                // if (res.data.code == "20000" || res.data.code == "20001") {
                                //     resolve(res.data)
                                // } else {
                                //     wx.showToast({
                                //         icon: "none",
                                //         title: res.data.message
                                //     })
                                // }
                            } else {
                                //2. 操作不成功返回数据，以toast方式弹出响应信息，如后端未格式化非操作成功异常信息，则可以统一定义异常提示
                                var errMsg = res.message
                                if (errMsg == "") {
                                    errMsg = "服务器繁忙!"
                                }
                                // wx.showToast({
                                //     title: errMsg,
                                //     icon: 'none',   // 图标类型，默认success
                                //     duration: 5000   // 提示窗停留时间，默认1500ms
                                // })
                            }
                        },
                        fail: function (e) {
                            reject(e)
                        }
                    })
                }
            })
            
        }

    })
}
export default http